#!/bin/bash

# 设置变量
POSTGRESQL_VERSION="14"  # 根据需要修改PostgreSQL版本
POSTGIS_VERSION="3.1"    # 根据需要修改PostGIS版本
POSTGRES_PASSWORD="postgres1234"  # 设置postgres用户的密码
DB_USER_PASSWORD="postgres1234"  # 设置数据库用户的密码（如果创建新用户）
DB_NAME=""  # 设置数据库名称（如果创建新数据库）
DB_USER=""  # 设置数据库用户名（如果创建新用户）

# 更新包列表并安装必要的依赖
sudo apt-get update
sudo apt-get install -y wget curl gnupg ca-certificates lsb-release ubuntu-keyring

# 添加PostgreSQL的官方APT存储库
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

# 更新包列表并安装PostgreSQL
sudo apt-get update
sudo apt-get install -y postgresql-$POSTGRESQL_VERSION postgresql-contrib-$POSTGRESQL_VERSION

# 确保PostgreSQL服务正在运行并设置为开机启动
sudo systemctl start postgresql
sudo systemctl enable postgresql

# 设置PostgreSQL的postgres用户密码
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '$POSTGRES_PASSWORD';"

# 创建新的数据库和用户（可选）
if [ ! -z "$DB_NAME" ] && [ ! -z "$DB_USER" ]; then
    sudo -u postgres createdb -O $DB_USER $DB_NAME
    sudo -u postgres psql -c "ALTER USER $DB_USER PASSWORD '$DB_USER_PASSWORD';"
fi

# 安装PostGIS模块
PACKAGE_NAME="postgresql-$POSTGRESQL_VERSION-postgis-$POSTGIS_VERSION"
if apt-cache search "$PACKAGE_NAME" > /dev/null 2>&1; then
    sudo apt-get install -y $PACKAGE_NAME
else
    echo "PostGIS package $PACKAGE_NAME not found in repositories."
    exit 1
fi

# 确保PostGIS扩展已添加到数据库中（如果需要）
if [ ! -z "$DB_NAME" ]; then
    sudo -u postgres psql -d $DB_NAME -c "CREATE EXTENSION postgis;"
fi

echo "PostgreSQL $POSTGRESQL_VERSION and PostGIS $POSTGIS_VERSION have been installed and configured."
